import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JSeparator;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.SwingConstants;
import java.awt.List;
import java.io.Serializable;
import java.util.Iterator;
import java.util.TreeMap;
import java.util.Set;
/**
 * Fenêtre de saisie d'un ouvrage 
 * Code du JFrame généré par Window Builder/Swing Designer.
 * @author IUT,  A.Culet 
 * @version 1.0
 */
public class VueSaisieOuvrage extends Vue implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	private JTextField textFieldIsbn ;
	private JTextField textFieldTitre;
	private JTextField textFieldDate;
	private JTextField textFieldEditeur;
	private JButton buttonEnreg;
	private JButton buttonAnnuler;
	private JButton buttonAjouter;
	private JTextField textFieldNom;
	private JTextField textFieldPrenom;
	private List listAuteur;
	private List listLesMotsCles;
	private TreeMap<String, Auteur> auteurs;
	private TreeMap<String, MotsCles> motsCles;
	
	/**
	 * Create the frame.
	 */
	@SuppressWarnings("deprecation")
	public VueSaisieOuvrage(Controleur controleur) {
		super(controleur);
		setTitle("Enregistrement d'un nouvel ouvrage");
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
		setBounds(100, 100, 450, 652);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JLabel lblNewLabel = new JLabel("ISBN");
		lblNewLabel.setHorizontalAlignment(SwingConstants.RIGHT);
		lblNewLabel.setBounds(99, 32, 61, 15);
		contentPane.add(lblNewLabel);
		
		textFieldIsbn = new JTextField();
		textFieldIsbn.setBounds(170, 32, 141, 19);
		contentPane.add(textFieldIsbn);
		textFieldIsbn.setColumns(10);
		
		JLabel lblNewLabel_1 = new JLabel("Titre");
		lblNewLabel_1.setHorizontalAlignment(SwingConstants.RIGHT);
		lblNewLabel_1.setBounds(99, 66, 61, 15);
		contentPane.add(lblNewLabel_1);
		
		textFieldTitre = new JTextField();
		textFieldTitre.setBounds(170, 65, 225, 19);
		contentPane.add(textFieldTitre);
		textFieldTitre.setColumns(10);
		
		buttonEnreg = new JButton("Enregistrer");
		buttonEnreg.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				String isbn = textFieldIsbn.getText();
				String titre = textFieldTitre.getText();
				String editeur = textFieldEditeur.getText();
				String dateEdition = textFieldDate.getText();
				String[] lesAuteurs = listAuteur.getItems();
				String[] lesMotsCles = listLesMotsCles.getSelectedItems();
				//System.out.println(lesAuteurs.length);
				auteurs=new TreeMap<String, Auteur>();
				int i=0;
				while (i<lesAuteurs.length){
					//System.out.println(lesAuteurs[i]);
					String s= lesAuteurs[i];
					String str[]=s.split(" ");
					Auteur a = new Auteur(str[0],str[1]);
					auteurs.put(lesAuteurs[i], a);
					i=i+1;
				}
				motsCles=new TreeMap<String, MotsCles>();
				int j=0;
				while (j<lesMotsCles.length){
					//System.out.println(lesMotsCles.length);
					MotsCles m = new MotsCles(lesMotsCles[j]);
					motsCles.put(lesMotsCles[j], m);
					j=j+1;
				}
				
				
				getControleur().nouvOuvrage(isbn, titre, auteurs, editeur, dateEdition,motsCles);
				getControleur().fermerVue(VueSaisieOuvrage.this);
				
			}
			
		});
		buttonEnreg.setBounds(77, 578, 107, 25);
		contentPane.add(buttonEnreg);
		
		buttonAnnuler = new JButton("Annuler");
		buttonAnnuler.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			getControleur().fermerVue(VueSaisieOuvrage.this);}
		});
		buttonAnnuler.setBounds(244, 578, 107, 25);
		contentPane.add(buttonAnnuler);
		
		JLabel lblNewLabel_2 = new JLabel("Date d'\u00E9dition (MM/AAAA)");
		lblNewLabel_2.setHorizontalAlignment(SwingConstants.RIGHT);
		lblNewLabel_2.setBounds(6, 119, 154, 33);
		contentPane.add(lblNewLabel_2);
		
		textFieldDate = new JTextField();
		textFieldDate.setBounds(170, 125, 114, 19);
		contentPane.add(textFieldDate);
		textFieldDate.setColumns(10);
		
		JLabel lblEditeur = new JLabel("Editeur");
		lblEditeur.setHorizontalAlignment(SwingConstants.RIGHT);
		lblEditeur.setBounds(99, 92, 61, 15);
		contentPane.add(lblEditeur);
		
		textFieldEditeur = new JTextField();
		textFieldEditeur.setColumns(10);
		textFieldEditeur.setBounds(170, 95, 218, 19);
		contentPane.add(textFieldEditeur);
		
		JSeparator separator = new JSeparator();
		separator.setBounds(0, 168, 440, 2);
		contentPane.add(separator);
		
		JLabel lblNomAuteur = new JLabel("Nom de l'auteur");
		lblNomAuteur.setHorizontalAlignment(SwingConstants.RIGHT);
		lblNomAuteur.setBounds(77, 197, 83, 11);
		contentPane.add(lblNomAuteur);
		
		JLabel lblPrenomAuteur = new JLabel("Pr\u00E9nom de l'auteur");
		lblPrenomAuteur.setHorizontalAlignment(SwingConstants.RIGHT);
		lblPrenomAuteur.setBounds(64, 231, 96, 14);
		contentPane.add(lblPrenomAuteur);
		
		textFieldNom = new JTextField();
		textFieldNom.setBounds(170, 197, 141, 20);
		contentPane.add(textFieldNom);
		textFieldNom.setColumns(10);
		
		textFieldPrenom = new JTextField();
		textFieldPrenom.setBounds(170, 228, 141, 20);
		contentPane.add(textFieldPrenom);
		textFieldPrenom.setColumns(10);
		
		JLabel lblSelectionnezLesAuteurs = new JLabel("Selectionnez le(s) auteur(s) ");
		lblSelectionnezLesAuteurs.setEnabled(false);
		lblSelectionnezLesAuteurs.setBounds(89, 283, 195, 14);
		contentPane.add(lblSelectionnezLesAuteurs);
		
		listAuteur = new List();
		listAuteur.setMultipleSelections(true);
		listAuteur.setBounds(89, 309, 222, 80);
		contentPane.add(listAuteur);
		
		buttonAjouter = new JButton("Ajouter");
		buttonAjouter.setBounds(321, 194, 89, 23);
		contentPane.add(buttonAjouter);
		buttonAjouter.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				String nom = textFieldNom.getText();
				String prenom = textFieldPrenom.getText();
				getControleur().nouveauAuteur(nom,prenom);
				alimenteListeAuteur(getControleur().getAuteurs());

			}
		});
		
		listLesMotsCles = new List();
		listLesMotsCles.setMultipleSelections(true);
		listLesMotsCles.setBounds(90, 448, 221, 88);
		contentPane.add(listLesMotsCles);
		
		JLabel lblSelectionnezLesMotsCles = new JLabel("Selectionnez le(s) mot(s) cl\u00E9(s)");
		lblSelectionnezLesMotsCles.setEnabled(false);
		lblSelectionnezLesMotsCles.setBounds(89, 426, 161, 14);
		contentPane.add(lblSelectionnezLesMotsCles);
		

		
	}
	
	@SuppressWarnings("deprecation")
	public void alimenteListeAuteur(TreeMap<String, Auteur> auteur) {
		Set<String> cles = auteur.keySet();
		Iterator<String> it = cles.iterator();
		listAuteur.clear();
		while (it.hasNext()){
			   String cle = (String) it.next(); // tu peux typer plus finement ici
			   Auteur valeur = auteur.get(cle); // tu peux typer plus finement ici
			   String auteurs = valeur.getAuteur();
			   listAuteur.add(auteurs);

		}
	}
	
	@SuppressWarnings("deprecation")
	public void alimenteListeMot(TreeMap<String, MotsCles> motsCles) {
			
		Set<String> cles = motsCles.keySet();
		Iterator<String> it = cles.iterator();
		listLesMotsCles.clear();
		while (it.hasNext()){
		   String cle = (String) it.next(); // tu peux typer plus finement ici
		   MotsCles valeur = motsCles.get(cle); // tu peux typer plus finement ici
		   String motcle = valeur.getMot();
		   listLesMotsCles.add(motcle);
		}
	}
	
	public void setEtat (int etat){
		switch (etat) {
		case initiale: {
			buttonEnreg.setEnabled(true);
			buttonAnnuler.setEnabled(true);
			break;
			}
		}
	}
}
